{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "QUMtCl5TEU_k"
      },
      "source": [
        "## Background\n",
        "\n",
        "In equation (6) of the AlphaFold3 (AF3) ([Abramson et al., 2023](https://doi.org/10.1038/s41586-024-07487-w)) Supplementary Info., the diffusion loss ($\\mathcal{L}_{diffusion}$) used to govern the training of the AF3 model is presented. The MSE term in this loss is weighted by the coefficient\n",
        "\n",
        "$$\\frac{\\hat{t}^2 + \\sigma_{data}^2}{(\\hat{t} + \\sigma_{data})^2},$$\n",
        "\n",
        "where $\\hat{t}$, the noise level, is sampled from\n",
        "\n",
        "$$\\hat{t} \\sim \\sigma_{data} \\cdot \\exp(-1.2 + 1.5 \\cdot \\mathcal{N} (0,1)).$$\n",
        "\n",
        "The purpose of weighting the MSE loss output (as described by Max Jaderberg in his discussion of AF3, available at [this YouTube link](https://www.youtube.com/watch?v=AE35XCN5NuU&t=1830s)) is derived from the work of [Karras et al., 2022](https://doi.org/10.48550/arXiv.2206.00364), where the weighting is used to ensure unit MSE loss at initialization. However, the weighting used by Karras et al. is given by\n",
        "\n",
        "$$\\frac{\\hat{t}^2 + \\sigma_{data}^2}{(\\hat{t} \\cdot \\sigma_{data})^2},$$\n",
        "\n",
        "which differs in the denominator from the weight presented in AF3. There is no explanation for this change in weighting, and, to the best of our understanding, there is no context in which this modified weighting would be suitable.\n",
        "\n",
        "## Hypothesis\n",
        "\n",
        "We hypothesize that this is a typo in the AF3 Supplementary Material and that the correct weighting coefficient should be as used in Karras et al.\n",
        "\n",
        "In this notebook, we investigate both weightings to provide evidence for our claim. We will plot both weightings as functions of sampling values and demonstrate that the weighting as written in AF3 yields values that do not align with the literature.\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "metadata": {
        "id": "omt28HLt3S18"
      },
      "outputs": [],
      "source": [
        "import numpy as np\n",
        "import matplotlib.pyplot as plt"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "metadata": {
        "id": "KNTPMrNP3W_e"
      },
      "outputs": [],
      "source": [
        "sigma_data = 16.0 # as used in af3\n",
        "\n",
        "# Sample 1000 times from N(0,1)\n",
        "samples = np.random.normal(loc=0, scale=1, size=1000)\n",
        "\n",
        "# Calculate and sort noise levels\n",
        "noise_levels = sigma_data * np.exp(-1.2 + 1.5 * samples)\n",
        "sorted_noise_levels = np.sort(noise_levels)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "metadata": {
        "id": "bDYD-7sd4u_h"
      },
      "outputs": [],
      "source": [
        "# supplementary info loss weighting\n",
        "old_weights = (sorted_noise_levels**2 + sigma_data**2) / ((sorted_noise_levels + sigma_data)**2)\n",
        "\n",
        "# 'corrected' loss weighting\n",
        "new_weights =  (sorted_noise_levels**2 + sigma_data**2) / ((sorted_noise_levels * sigma_data)**2)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "_o1zwVxZNOrH"
      },
      "source": [
        "In the figure below we plot the new and old weight values against noise levels $\\hat{t}$. A logarithmic scale is chosen for better visualisation. For greater context, we superimpose the histogram of noise levels."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 564
        },
        "id": "jh3u33QFLsXI",
        "outputId": "71ff2050-06cf-41ca-c3f5-fd2edc500672"
      },
      "outputs": [
        {
          "data": {
            "image/png": "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CgMGDCjx5IkbN26gd+/esLCwgIuLCz7++GMUFRVVSYyaYhJJRERERERUhY4dO4aVK1eiZcuWKuWTJ0/Gn3/+iU2bNiExMRF37txB//79xePFxcXo3bs3CgsLcejQIaxZswaxsbGYPn16db8FFUwiiYiIiIiIqkhubi6GDh2KH374Afb29mJ5VlYWVq1ahUWLFqFr167w8fHB6tWrcejQIRw+fBgAsGfPHqSmpuKnn35C69atERISgtmzZ2t9/RYmkWrExMRAKpUiICBA26EQERERUQ0zatQo9O3bt1zXeHl5YfHixVUSD5VPTk4OsrOzxa2goKDM88PCwtC7d28EBQWplKekpEAmk6mUN2nSBJ6enkhOTgYAJCcno0WLFipPnggODkZ2djbOnj1bie+qfJhEqhEWFobU1FQkJCRoOxQiIiKiV87IkSMhkUgwb948lfKtW7dW6/zOjh074sMPP1QpW7FiBSQSCWJjY1XKR44ciddff12jehcvXlzi+pd17do1SCQSnDp1qlLrpZKkUilsbW3FLTo6utRzf/nlF5w4cULtORkZGTAxMYGdnZ1KuaurKzIyMsRznn90oXJfeY42MIkkIiIiIp1jZmaG+fPn49GjR1qLITAwsESnQnx8PDw8PEqUJyQkoGvXrhrVa2trWyJxIP2RmpqKrKwscYuMjFR73s2bNzFx4kSsX7++xq3yyiSSiIiI6BUhCEBenna2Fzz2u4SgoCC4ubmV2csDAAcPHsTrr78Oc3NzeHh44KOPPkJeXh4AYNmyZWjevLl4rrInc8WKFSr3+fzzz9XWHRgYiAsXLqj0+CQmJuLTTz9VSSLT0tJw/fp1BAYGAlAkD4MHD4adnR0cHBzw1ltv4dq1a+L5zw9nzcnJwdChQ2FpaQl3d3d88803CAgIUFnFEwCePHmC9957D9bW1vD09MT3338vHqtXrx4AoE2bNpBIJOK0rISEBLRv3x6Wlpaws7ND586dcf369TK/p1Q2a2tr2NjYiJupqana81JSUnD37l289tprMDIygpGRERITE7FkyRIYGRnB1dUVhYWFePz4scp1mZmZcHNzAwC4ubmVWK1Vua88RxuYRBIRERG9Ip48AaystLM9eVK+WA0NDfHll19i6dKluHXrltpzrly5gp49e2LAgAH4+++/sXHjRhw8eBDh4eEAAH9/f6SmpuLevXsAFAmgk5OTmADKZDIkJyeXug5G586dYWxsjPj4eACKHqinT59i9OjRePDgAdLS0gAoeifNzMzg6+sLmUyG4OBgWFtb48CBA0hKSoKVlRV69uxZ6kIoERERSEpKwv/+9z/ExcXhwIEDOHHiRInzFi5ciLZt2+LkyZMYP348xo0bhwsXLgAAjh49CgDYu3cv0tPT8fvvv6OoqAh9+/aFv78//v77byQnJ2Ps2LF85Es16datG86cOYNTp06JW9u2bTF06FDxa2NjY+zbt0+85sKFC7hx4wZ8fX0BAL6+vjhz5gzu3r0rnhMXFwcbGxtIpdJqf09KTCLV4MI6RERERNrXr18/tG7dGjNmzFB7PDo6GkOHDsWkSZPQsGFDdOrUCUuWLMHatWuRn5+P5s2bw8HBAYmJiQAUvXJTpkwR948ePQqZTIZOnTqprd/S0hLt27cXk86EhAR06dIFpqam6NSpk0q5r68vTE1NsXHjRsjlcvz3v/9FixYt0LRpU6xevRo3btxQu95GTk4O1qxZg6+//hrdunVD8+bNsXr1ahQXF5c4t1evXhg/fjy8vb0xbdo0ODk5iQmus7MzAMDR0RFubm5wcHBAdnY2srKy8MYbb6BBgwZo2rQpQkND4enpqXEbUMVZW1ujefPmKpulpSUcHR3RvHlz2NraYvTo0YiIiEB8fDxSUlIwatQo+Pr6omPHjgCAHj16QCqVYvjw4Th9+jR2796Nzz//HGFhYaX2gFYHJpFq6OLCOjdvAlu2SJCa6qDtUIiIiEhPWVgAubna2SwsKhbz/PnzsWbNGpw7d67EsdOnTyM2NhZWVlbiFhwcDLlcjrS0NEgkEvj5+SEhIQGPHz9Gamoqxo8fj4KCApw/fx6JiYlo164dLMoILiAgQCVZVHYy+Pv7q5Qrh7KePn0aly9fhrW1tRiTg4MD8vPzceXKlRL1X716FTKZDO3btxfLbG1t0bhx4xLnPvuMQYlEAjc3N5Uequc5ODhg5MiRCA4ORp8+ffDtt98iPT291POp+n3zzTd44403MGDAAPj5+cHNzQ2///67eNzQ0BDbtm2DoaEhfH19MWzYMIwYMQKzZs3SYtSAkVbvThrbvx8YNswIrVo1xtSp2o6GiIiI9JFEAlhaajuK8vHz80NwcDAiIyMxcuRIlWO5ubn44IMP8NFHH5W4TtnbFhAQgO+//x4HDhxAmzZtYGNjIyaWiYmJ8Pf3L/P+gYGBmDt3Lm7fvo2EhARM/f8/xPz9/bFy5UpcuXIFN2/eFBfVyc3NhY+PD9avX1+iLkdHx4p8C0TGxsYq+xKJBHK5vMxrVq9ejY8++gi7du3Cxo0b8fnnnyMuLk7s6aLq9XwnlZmZGWJiYhATE1PqNXXr1sWOHTuqOLLyYRJJRERERDpt3rx5aN26dYneuddeew2pqanw9vYu9Vp/f39MmjQJmzZtEnsRAwICsHfvXiQlJWHKlCll3rtTp04wMTHBd999h/z8fPj4+AAA2rVrh3v37uHHH38Uh70qY9q4cSNcXFxgY2OjUpdcLkd2drZKWf369WFsbIxjx46JiW9WVhYuXrwIPz+/F39z/p+JiQkAqB0G26ZNG7Rp0waRkZHw9fXFhg0bmETSS+FwVj3TpMkx7N+/X6eG2hIRERFVpRYtWmDo0KFYsmSJSvm0adNw6NAhhIeH49SpU7h06RL++OMPcWEdQDEE1N7eHhs2bFBJIrdu3YqCggJ07ty5zHubm5ujY8eOWLp0KTp37gxDQ0MAiqTt2XJlL+HQoUPh5OSEt956CwcOHEBaWhoSEhLw0UcfqV0gyNraGqGhofj4448RHx+Ps2fPYvTo0TAwMCjXAjguLi4wNzfHrl27kJmZiaysLKSlpSEyMhLJycm4fv069uzZg0uXLqFp06Ya10ukDpNIPcFFtIiIiOhVNmvWrBJDN1u2bInExERcvHgRr7/+Otq0aYPp06ejVq1a4jkSiQSvv/46JBIJunTpIl5nY2ODtm3bwlKD8b2BgYHIyckpseiiv78/cnJyxPmQAGBhYYH9+/fD09MT/fv3R9OmTTF69Gjk5+eX6JlUWrRoEXx9ffHGG28gKCgInTt3RtOmTcv1bEEjIyMsWbIEK1euRK1atfDWW2/BwsIC58+fx4ABA9CoUSOMHTsWYWFh+OCDDzSul0gdDmclIiIiIp0SGxtboszLywsFBQUlytu1a4c9e/aUWd/WrVtV9g0MDPDw4UON44mKikJUVFSJ8hkzZqhdOdbNzQ1r1qwpUa4czrp69WoYGPzbl2Ntba0yhzIvLw8zZ87E2LFjxbJnnzOpdOrUKZX9999/H++//75K2ZYtW0p7W0QVxiRSDeXk1tKe5aMN7IkkIiIiqplOnjyJ8+fPo3379sjKyhJX3nzrrbe0HBmRehzOqoYuPuJDSRC0HQERERERVbavv/4arVq1QlBQEPLy8nDgwAE4OTlpOywitdgTqSfYE0lERERUM7Vp0wYpKSnaDoNIY+yJJCIiIiIiIo0xidQT7IkkIiIiIiJdwCSSiIiIiIiINMYkkoiIiIiIiDTGJFJPcDgrERERERHpAiaRasTExEAqlSIgIEDboZQgCMwmiYiIiIhIe5hEqqGLz4lkTyQRERFRSV5eXli8eHGZ50gkEmzdurVa4lFKSEiARCLB48ePNb4mKioKrVu3rrKYiCoLk0giIiIi0jk3b97Ee++9h1q1asHExAR169bFxIkT8eDBg0q9z4oVK2BtbY2ioiKxLDc3F8bGxiVGpSkTwytXrryw3k6dOiE9PR22traVGm9AQAAmTZpUqXUSlReTSD3BnkgiIiJ6VVy9ehVt27bFpUuX8PPPP+Py5ctYsWIF9u3bB19fXzx8+LDS7hUYGIjc3FwcP35cLDtw4ADc3Nxw5MgR5Ofni+Xx8fHw9PREgwYNXliviYkJ3NzcIOEfcVQDMYkkIiIielUIApCXp51NEDQOMywsDCYmJtizZw/8/f3h6emJkJAQ7N27F7dv38Z//vOfUq+9dOkS/Pz8YGZmBqlUiri4uDLv1bhxY7i7u6tMY0pISMBbb72FevXq4fDhwyrlgYGBAAC5XI7o6GjUq1cP5ubmaNWqFTZv3qxy7vPDWX/44Qc0a9YMVlZW6NevHxYtWgQ7O7sSMa1btw5eXl6wtbXF22+/jZycHADAyJEjkZiYiG+//RYSiQQSiQTXrl3Do0ePMHToUDg7O8Pc3BwNGzbE6tWry3zfRC+DSSQRERHRq+LJE8DKSjvbkycahfjw4UPs3r0b48ePh7m5ucoxNzc3DB06FBs3boSgJimVy+Xo378/TExMcOTIEaxYsQLTpk174T0DAwMRHx8v7sfHxyMgIAD+/v5i+dOnT3HkyBExiYyOjsbatWuxYsUKnD17FpMnT8awYcOQmJio9h5JSUkYP348PvzwQ5w4cQLdu3fH3LlzS5x35coVbN26Fdu2bcO2bduQmJiIefPmAQC+/fZb+Pr6YsyYMUhPT0d6ejo8PDzwxRdfIDU1FTt37sS5c+ewfPlyODk5vfB9E1WUkbYDIM1wJAQRERG9Ci5dugRBENC0aVO1x5s2bYpHjx7h3r17cHFxUTm2d+9enD9/Hrt370atWrUAAF9++SVCQkLKvGdgYCAmTZqEoqIiPH36FCdPnoS/vz9kMhlWrFgBAEhOTkZBQQECAwNRUFCAL7/8Env37oWvry8AoH79+jh48CBWrlwJf3//EvdYunQpevbsiQkTJsDGxgZNmjTBoUOHsG3bNpXz5HI5YmNjYW1tDQAYPnw49u3bh7lz58LW1hYmJiawsLCAm5ubeM2NGzfQpk0btG3bFoBisSGiqsQkUs+UYyQIERERkSoLCyA3V3v3Lgd1PY0vcu7cOXh4eIgJJAAxyStLQEAA8vLycOzYMTx69AiNGjWCs7Mz/P39MWrUKOTn5yMhIQH169eHp6cnzp49iydPnqB79+4q9RQWFqJNmzZq73HhwgX07dtXpax9+/YlkkgvLy8xgQQAd3d33L17t8z4x40bhwEDBuDEiRPo0aMH+vbti06dOr3wfRNVFJNIPcGeSCIiInppEglgaantKMrk7e0NiUSCc+fOoV+/fiWOnzt3Dvb29nB2dq7Ue9apUwfx8fF49OiR2JNYq1YteHh44NChQ4iPj0fXrl0BKFZvBYDt27ejdu3aKnWZmpq+VCzGxsYq+xKJBHK5vMxrQkJCcP36dezYsQNxcXHo1q0bwsLC8PXXX79ULESl4ZxIIiIiItIZjo6O6N69O7777js8ffpU5VhGRgbWr1+PIUOGqF31tGnTprh58ybS09PFsmcXxilLYGAgEhISkJCQoPJoDz8/P+zcuRNHjx4V50NKpVKYmprixo0b8Pb2Vtk8PDzU1t+4cWMcO3ZMpez5fU2YmJiguLi4RLmzszNCQ0Px008/YfHixfj+++/LXTeRptgTqUZMTAxiYmJQWFio7VBE7IkkIiKiV8WyZcvQqVMnBAcHY86cOahXrx7Onj2Ljz/+GLVr11a7IA0ABAUFoVGjRggNDcVXX32F7OzsMldyfVZgYCDCwsIgk8lU5jT6+/sjPDwchYWFYhJpbW2NqVOnYvLkyZDL5ejSpQuysrKQlJQEGxsbhIaGlqh/woQJ8PPzQ0xMDAYOHIiEhATs3Lmz3I8A8fLywpEjR3Dt2jVYWVnBwcEBUVFR8PHxQbNmzVBQUIBt27aVOqeUqDKwJ1KNsLAwpKamqiz1TERERETVo2HDhjh+/Djq16+PwYMHo0GDBhg7diwCAwORnJwMBwcHtdcZGBhgy5YtePr0Kdq3b4/333+/1ITzeYGBgXj69Cm8vb3h6uoqlvv7+yMnJ0d8FIjS7Nmz8cUXXyA6OhpNmzZFz549sX37dtSrV09t/Z07d8Z3332H7777Dm3atMGuXbswefJkmJmZleM7A0ydOhWGhoaQSqVwdnbGjRs3YGJigsjISLRs2RJ+fn4wNDTEL7/8Uq56icpDIlRk1vIr4tatW/Dw8MDNmzdRp04drcayZQvQvz8wcOAOfPihKQwNDVWGWpD2yWQy7NixA7169Soxn4F0A9tI97GNdBvbR/c930b5+flIS0tDvXr1yp2sUOWTy+XIzs6GjY0NDAwMMGbMGJw/fx4HDhzQdmj0/+RyOe7fv4/79++jfv36Kj83upQbaBuHs+oJDmclIiIi0m8LFy5Ex44d4erqit27d2PNmjX47rvvtB0WUbkxidQzgsBskoiIiEgfHT16FAsWLEBubi7q16+PJUuW4P3339d2WETlxiRST7AnkoiIiEi/bdy4UWU4K5G+4qeXiIiIiIiINMYkUk+wJ5KIiIiIiHQBk0giIiIiIiLSGJNIIiIiIiIi0hiTSD3B4axERERERKQLmETqGUHQdgRERERERPQq4yM+9AR7IomIiKiyJCQkVOv9AgICqvV+z/Ly8sKkSZMwadIkrcVQlRISEhAYGIhHjx7Bzs7upeoaOXIkHj9+jK1bt1ZKbFRzsSeSiIiIiHTKyJEjIZFIMG/ePJXyrVu3QlLO/1k/duwYxo4dW5nhqfDy8sLixYurrP7KUFqMUVFRaN26tbj/7bffIjY2VqM6R44cib59+1ZKfKR/mESqERMTA6lUqtX/NXseeyKJiIjoVWJmZob58+fj0aNHL1WPs7MzLCwsKimqms3W1valezOrQmFhobZDoOcwiVQjLCwMqamp1T7Ug4iIiIgUgoKC4Obmhujo6DLP++2339CsWTOYmprCy8sLCxcuVDn+bC+cIAiIioqCp6cnTE1NUatWLXz00UfiuQUFBZg6dSpq164NS0tLdOjQ4aX/Hvzjjz/w2muvwczMDN7e3pg/fz6KiooAAO+++y6GDBmicr5MJoOTkxPWrl0LAJDL5YiOjka9evVgbm6OVq1aYfPmzS8VU2me713cvHkzWrRoAXNzczg6OiIoKAh5eXmIiorCmjVr8Mcff0AikUAikYjfpzNnzqBr167iNWPHjkVubq5YZ1FRET766CPY2dnB0dER06ZNQ2hoqMp9AwICEB4ejkmTJsHJyQnBwcEAgEWLFqFFixawtLSEh4cHxo8fr1J3bGws7OzssG3bNjRu3BgWFhYYOHAgnjx5gjVr1sDLywv29vb46KOPUFxcXCXfw1cFk0giIiIi0jmGhob48ssvsXTpUty6dUvtOSkpKRg8eDDefvttnDlzBlFRUfjiiy9KHZL522+/4ZtvvsHKlStx6dIlbN26FS1atBCPh4eHIzk5Gb/88gv+/vtvDBo0CD179sSlS5cq9B4OHDiAESNGYOLEiUhNTcXy5cuxYcMGfPnllwCAoUOH4s8//1RJhHbv3o0nT56gX79+AIDo6GisXbsWK1aswNmzZzF58mQMGzYMiYmJFYpJU+np6XjnnXfw3nvv4dy5c0hISED//v0hCAKmTp2KwYMHo2fPnkhPT0d6ejo6deqEvLw8BAcHw97eHseOHcOmTZuwd+9ehIeHi/XOnz8f69evx+rVq5GUlITs7Gy1czDXrFkDExMTJCUlYcWKFQAAAwMDLFmyBGfPnsWaNWvw119/4ZNPPlG57smTJ1iyZAl++eUX7Nq1CwkJCejXrx927NiBHTt2YN26dVi5cmWVJeKvCi6soyc4nJWIiIheNf369UPr1q0xY8YMrFq1qsTxRYsWoVu3bvjiiy8AAI0aNUJqaiq++uorjBw5ssT5N27cgJubG4KCgmBsbAxPT0+0b99ePLZ69WrcuHEDtWrVAgBMnToVu3btwurVq8XErzxmzpyJTz/9FKGhoQAUvaKfffYZZs6ciaioKAQHB8PS0hJbtmzB8OHDAQAbNmzAm2++CWtraxQUFODLL7/E3r174evrCwCoX78+Dh48iJUrV8Lf31/jWKZNm4bPP/9cpaywsBBSqVTt+enp6SgqKkL//v1Rt25dAFBJuM3NzVFQUAA3NzexbM2aNcjPz8fatWthaWkJAFi2bBn69OmD+fPnw9XVFUuXLkVkZKSYJC9btgw7duwocf+GDRtiwYIFKmXPLo7k5eWFOXPm4MMPP8R3330nlstkMixfvhwNGjQAAAwcOBDr1q1DZmYmrKysIJVKERgYiPj4+BK9wKQ59kTqGUFgNklERESvjvnz52PNmjU4d+5ciWPnzp1D586dVco6d+6MS5cuqR2uOGjQIDx9+hT169fHmDFjsGXLFnFo6ZkzZ1BcXIxGjRrByspK3BITE3HlypUKxX769GnMmjVLrMvGxgaTJk1Ceno6njx5AiMjIwwePBjr168HAOTl5eGPP/7A0KFDAQCXL1/GkydP0L17d5WY1q5dW+6YPv74Y5w6dUpl+/DDD0s9v1WrVujWrRtatGiBQYMG4Ycffnjh/NRz586hVatWYgIJKNpDLpfjwoULyMrKQmZmppi4A4oeZx8fnxJ1qSvbu3cvunXrhtq1a8Pa2hrDhw/HgwcP8OTJE/EcCwsLMYEEAFdXV3h5ecHKykql7O7du2W+FyobeyL1BHsiiYiI6FXk5+eH4OBgREZGqu1dLA8PDw9cuHABe/fuRVxcHMaPH4+vvvoKiYmJyM3NhaGhIVJSUmBoaKhy3bMJSHnk5uZi5syZ6N+/PwDF/Mbc3FxYWVnBzMwMgGJIq7+/P+7evYu4uDiYm5ujZ8+e4vUAsH37dtSuXVulblNT03LF4uTkBG9vb5UyBweHUs83NDREXFwcDh06hD179mDp0qX4z3/+gyNHjqBevXrlundFPJuIAsC1a9fwxhtvYNy4cZg7dy4cHBxw8OBBjB49GoWFheLiScbGxirXSSQStWVyubxq30ANxySSiIiIiHTavHnz0Lp1azRu3FilvGnTpkhKSlIpS0pKQqNGjUokgkrm5ubo06cP+vTpg7CwMDRp0gRnzpxBmzZtUFxcjLt37+L111+vlLhfe+01XLhwQUze5HI5srOzYWNjAwMDxYDATp06wcPDAxs3bsTOnTsxaNAgMemRSqUwNTXFjRs3yjV0tbJIJBJ07twZnTt3xvTp01G3bl1s2bIFERERMDExKdHb27RpU8TGxiIvL09MApOSkmBgYIDGjRvD1tYWrq6uOHbsGPz8/AAAxcXFOHHihMqjRtRJSUmBXC7HwoULxe/dr7/+WvlvmjTCJFJPsCeSiIiIXlUtWrTA0KFDsWTJEpXyKVOmoF27dpg9ezaGDBmC5ORkLFu2TGWO3LNiY2NRXFyMDh06wMLCAj/99BPMzc1Rt25dODo6YujQoRgxYgQWLlyINm3a4N69e9i3bx9atmyJ3r17lxrf7du3cerUKZWyunXrYvr06XjjjTfg6emJgQMHAgAOHz6Mq1evYu7cueK57777LlasWIGLFy8iPj5eLLe2tsbUqVMxefJkyOVydOnSBVlZWUhKSoKNjY0417IqHDlyBPv27UOPHj3g4uKCI0eO4N69e2jatCkAxZzE3bt348KFC3B0dIStrS2GDh2KGTNmIDQ0FFFRUbh37x4mTJiA4cOHw9XVFQAwYcIEREdHw9vbG02aNMHSpUvx6NGjFz7/09vbGzKZDEuXLkWfPn1UFtyh6sckkoiIiOgVo0vPwtbUrFmzsHHjRpWy1157Db/++iumT5+O2bNnw93dHbNmzSp12KudnR3mzZuHiIgIFBcXo0WLFvjzzz/h6OgIAFi9ejXmzJmDKVOm4Pbt23ByckLHjh3xxhtvlBnb119/ja+//lqlbN26dRg2bBi2bduGWbNmYf78+TA2NkbDhg0xZswYlXOHDh2KuXPnom7duiXmeM6ePRvOzs6Ijo7G1atXYWdnh9deew2fffaZJt+2CrOxscH+/fuxePFiZGdno27duli4cCFCQkIAAGPGjEFCQgLatm2L3NxcxMfHIyAgALt378bEiRPRrl07WFhYYMCAAVi0aJFY77Rp05CRkYERI0bA0NAQY8eORXBwcKk9x0qtWrXCokWLMH/+fERGRsLPzw/R0dEYMWJElX4fSD2JIAiCtoPQVbdu3YKHhwdu3ryJOnXqaDWWXbuAkBCgX79dCAszhqGhoV7+A1CTyWQy7NixA7169Sox9p50A9tI97GNdBvbR/c930b5+flIS0tDvXr1xDl4pD3qhrO+6uRyOZo2bYrBgwdj9uzZ2g4Hcrkc9+/fx/3791G/fn2Vn5vy5gbLly/H8uXLce3aNQBAs2bNMH36dDERDwgIKPGolg8++EClh/XGjRsYN24c4uPjYWVlhdDQUERHR8PISLt9geyJ1BMczkpERERE+u769evYs2cP/P39UVBQgGXLliEtLQ3vvvuutkOrdHXq1MG8efPQsGFDCIKANWvW4K233sLJkyfRrFkzAIoe3VmzZonXKBcIAhTzRXv37g03NzccOnQI6enpGDFiBIyNjSv0yJnKxCRSz7DfmIiIiIj0lYGBAWJjYzF16lQIgoDmzZtj79694lzLmqRPnz4q+3PnzsXy5ctx+PBhMYm0sLBQedbms/bs2YPU1FTs3bsXrq6uaN26NWbPno1p06YhKioKJiYmVf4eSsN+dD3BnkgiIiIi0nceHh5ISkpCVlYWsrOzcejQIXGlVn2Rk5OD7OxscSsoKHjhNcXFxfjll1+Ql5cHX19fsXz9+vVwcnJC8+bNERkZqfLMy+TkZLRo0UJclAgAgoODkZ2djbNnz1bumyon9kQSERERERFpSCqVquzPmDEDUVFRas89c+YMfH19kZ+fDysrK2zZskW8/t1330XdunVRq1Yt/P3335g2bRouXLiA33//HQCQkZGhkkACEPczMjIq+V2VD5NIPcGeSCIiIqoorqNIpLkX/bykpqaidu3a4r6pqWmp5zZu3BinTp1CVlYWNm/ejNDQUCQmJkIqlWLs2LHieS1atIC7uzu6deuGK1euoEGDBi//RqoQh7MSERER1VDKxyYUFhZqORIi/aH8eSltFWpra2vY2NiIW1lJpImJCby9veHj44Po6Gi0atUK3377rdpzO3ToAAC4fPkyAMDNzQ2ZmZkq5yj3S5tHWV3YE0lERERUQxkZGcHCwgL37t2DsbExHyuhZXK5HIWFhcjPz2db6CBBEJCbm4v79+/D2dn5hc+urAi5XF7qHMpTp04BANzd3QEAvr6+mDt3Lu7evQsXFxcAQFxcHGxsbEoMqa1uTCL1BIezEhERUXlJJBK4u7sjLS0N169f13Y4rzxBEPD06VOYm5tDwj/udJIgCHj06JG4eurLiIyMREhICDw9PZGTk4MNGzYgISEBu3fvxpUrV7Bhwwb06tULjo6O+PvvvzF58mT4+fmhZcuWAIAePXpAKpVi+PDhWLBgATIyMvD5558jLCyszN7P6sAkUs9wSgMRERGVh4mJCRo2bMghrTpAJpNh//798PPzK3WoJGnfpUuXKiXJv3v3LkaMGIH09HTY2tqiZcuW2L17N7p3746bN29i7969WLx4MfLy8uDh4YEBAwbg888/F683NDTEtm3bMG7cOPj6+sLS0hKhoaEqz5XUlhqfRN68eRPDhw/H3bt3YWRkhC+++AKDBg3Sdljlxv+sIiIioooyMDCAmZmZtsN45RkaGqKoqAhmZmZMInWUTCartLpWrVpV6jEPDw8kJia+sI66detix44dlRZTZanxSaSRkREWL16M1q1bIyMjAz4+PujVqxcsLS21HVoFMZskIiIiIiLtqfFJpLu7uzg51c3NDU5OTnj48KHeJZHsiSQiIiIiIl2g88tC7d+/H3369EGtWrUgkUiwdevWEufExMTAy8sLZmZm6NChA44ePaq2rpSUFBQXF8PDw6OKoyYiIiIiIqqZdD6JzMvLQ6tWrRATE6P2+MaNGxEREYEZM2bgxIkTaNWqFYKDg3H37l2V8x4+fIgRI0bg+++/r46wiYiIiIiIaiSdH84aEhKCkJCQUo8vWrQIY8aMwahRowAAK1aswPbt2/Hjjz/i008/BQAUFBSgb9+++PTTT9GpU6dS6yooKFB5bktOTg4AoKioqFIn2VZEcbEEyuaSy+UAKnfiL708ZXuwXXQX20j3sY10G9tH97GNdBvbR/eV1UZFRUXVHY7O0vkksiyFhYVISUlBZGSkWGZgYICgoCAkJycDUDzrZeTIkejatSuGDx9eZn3R0dGYOXNmifJ9+/bBycmpcoMvpzNnnAB0hiAAV65cAQDk5uZqNSZSLy4uTtsh0AuwjXQf20i3sX10H9tIt7F9dJ+6Nrp//74WItFNep1E3r9/H8XFxXB1dVUpd3V1xfnz5wEASUlJ2LhxI1q2bCnOp1y3bh1atGhRor7IyEhERESI+7dv34ZUKkW3bt1Qu3btqnsjGrC0/HdlnQYNGsDAwAB+fn5ajIieJ5PJEBcXh+7du3PZbh3FNtJ9bCPdxvbRfWwj3cb20X1ltdHt27e1FJXu0eskUhNdunQRh3++iKmpKUxNTcX97OxsAIrHhGj7B93omZYyMDCAoaGh1mMi9YyNjdk2Oo5tpPvYRrqN7aP72Ea6je2j+9S1kZFRjU+dNKbzC+uUxcnJCYaGhsjMzFQpz8zMhJubm5aiqhp8xAcREREREekCvU4iTUxM4OPjg3379ollcrkc+/btg6+vb4XrjYmJgVQqRUBAQCVESUREREREVHPofJ9sbm4uLl++LO6npaXh1KlTcHBwgKenJyIiIhAaGoq2bduiffv2WLx4MfLy8sTVWisiLCwMYWFhuHXrFp8pSURERERE9AydTyKPHz+OwMBAcV+58E1oaChiY2MxZMgQ3Lt3D9OnT0dGRgZat26NXbt2lVhsR99xOCsREREREekCnU8iAwICIAhCmeeEh4cjPDy8miLSrhd8K4iIiIiIiKqUXs+JrCq6OCeSPZFERERERKQLmESqERYWhtTUVCQkJGg7FDWYTRIRERERkfYwidQT7IkkIiIiIiJdwCSSiIiIiIiINMYkUg3OiSQiIiIiIlKPSaQauj0nkoiIiIiISHuYROoZPuKDiIiIiIi0iUmknuBwViIiIiIi0gVMIomIiIiIiEhjTCL1BHsiiYiIiIhIFzCJVEMXV2dV4pxIIiIiIiLSJiaRauji6qzsiSQiIiIiIl3AJJKIiIiIiIg0xiSSiIiIiIiINMYkUk9wOCsREREREekCJpFERERERESkMSaRauji6qzsiSQiIiIiIl3AJFINXVydVUkQmE0SEREREZH2MInUE+yJJCIiIiIiXcAkkoiIiIiIiDTGJJKIiIiIiIg0xiRST3A4KxERERER6QImkURERERERKQxJpF6gj2RRERERESkC5hEqqGLz4lUEgRtR0BERERERK8yJpFq6OJzItkTSUREREREuoBJJBEREREREWmMSSQRERERERFpjEmknuBwViIiIiIi0gVMIomIiIiIiEhjTCL1BHsiiYiIiIhIFzCJ1DOCwGySiIiIiIi0h0mknmBPJBERERGR/li+fDlatmwJGxsb2NjYwNfXFzt37hSP5+fnIywsDI6OjrCyssKAAQOQmZmpUseNGzfQu3dvWFhYwMXFBR9//DGKioqq+62UwCSSiIiIiIioktWpUwfz5s1DSkoKjh8/jq5du+Ktt97C2bNnAQCTJ0/Gn3/+iU2bNiExMRF37txB//79xeuLi4vRu3dvFBYW4tChQ1izZg1iY2Mxffp0bb0lkZG2A9BFMTExiImJQWFhobZDISIiIiIiPdSnTx+V/blz52L58uU4fPgw6tSpg1WrVmHDhg3o2rUrAGD16tVo2rQpDh8+jI4dO2LPnj1ITU3F3r174erqitatW2P27NmYNm0aoqKiYGJioo23BYA9kWqFhYUhNTUVCQkJ2g5FxOGsRERERETal5OTg+zsbHErKCh44TXFxcX45ZdfkJeXB19fX6SkpEAmkyEoKEg8p0mTJvD09ERycjIAIDk5GS1atICrq6t4TnBwMLKzs8XeTG1hEklERERERKQhqVQKW1tbcYuOji713DNnzsDKygqmpqb48MMPsWXLFkilUmRkZMDExAR2dnYq57u6uiIjIwMAkJGRoZJAKo8rj2kTh7PqCfZEEhERERFpX2pqKmrXri3um5qalnpu48aNcerUKWRlZWHz5s0IDQ1FYmJidYRZpZhE6hlB0HYERERERESvLmtra9jY2Gh0romJCby9vQEAPj4+OHbsGL799lsMGTIEhYWFePz4sUpvZGZmJtzc3AAAbm5uOHr0qEp9ytVbledoC4ez6gn2RBIRERER6Te5XI6CggL4+PjA2NgY+/btE49duHABN27cgK+vLwDA19cXZ86cwd27d8Vz4uLiYGNjA6lUWu2xP4s9kURERERERJUsMjISISEh8PT0RE5ODjZs2ICEhATs3r0btra2GD16NCIiIuDg4AAbGxtMmDABvr6+6NixIwCgR48ekEqlGD58OBYsWICMjAx8/vnnCAsLK3MIbXVgEklERERERFTJ7t69ixEjRiA9PR22trZo2bIldu/eje7duwMAvvnmGxgYGGDAgAEoKChAcHAwvvvuO/F6Q0NDbNu2DePGjYOvry8sLS0RGhqKWbNmaestiZhE6gkOZyUiIiIi0h+rVq0q87iZmZn4fPrS1K1bFzt27Kjs0F4a50QSERERERGRxphE6gn2RBIRERERkS5gEqln+IgPIiIiIiLSJiaReoI9kUREREREpAuYRBIREREREZHGmETqHXZJEhERERGR9jCJVCMmJgZSqRQBAQHaDkXE4axERERERKQLmESqERYWhtTUVCQkJGg7FCIiIiIiIp3CJFJPsCeSiIiIiIh0AZNIPcNHfBARERERkTYxidQT7IkkIiIiIiJdwCRSTxiwpYiIiIiISAcwNdETyp5IQWCXJBERERERaQ+TSD3BnkgiIiIiItIFTE30xL89kdqNg4iIiIiIXm1MIvUEF9YhIiIiIiJdwCRSTyiHs7InkoiIiIiItIlJpJ74tyeSXZJERERERKQ9TCL1BHsiiYiIiIhIFzCJ1BOcE0lERERERLqASaSe4OqsRERERESkC5hE6ol/nxPJLkkiIiIiItIeJpF6gsNZiYiIiIhIFzCJ1BMGz7QUh7QSEREREZG2MInUE8/2RDKJJCIiIiIibXklksh+/frB3t4eAwcO1HYoFcbhrEREREREpAteiSRy4sSJWLt2rbbDeCkczkpERERERLrglUgiAwICYG1tre0wXgqHsxIRERERkS7Q+SRy//796NOnD2rVqgWJRIKtW7eWOCcmJgZeXl4wMzNDhw4dcPTo0eoPtIoZ6HxLERERERHRq8BI2wG8SF5eHlq1aoX33nsP/fv3L3F848aNiIiIwIoVK9ChQwcsXrwYwcHBuHDhAlxcXMp1r4KCAhQUFIj7OTk5AICioiLIZLKXeyMvqagIAIz//2s5jIyg9ZhIlbI92C66i22k+9hGuo3to/vYRrqN7aP7ymqjIsUf5ARAIgj6MzhSIpFgy5Yt6Nu3r1jWoUMHtGvXDsuWLQMAyOVyeHh4YMKECfj000/F8xISErBs2TJs3ry51PqjoqIwc+bMEuX//e9/4eTkVHlvpAIKCgwxZMgbCAhIwIABF2FkJIe7u7tWYyIiIiIielXcv38f77//Pm7evIk6depoOxyt0vmeyLIUFhYiJSUFkZGRYpmBgQGCgoKQnJxc7voiIyMREREh7t++fRtSqRTdunVD7dq1KyXmisrP//drL696MDc3gJ+fn/YCohJkMhni4uLQvXt3GBsbazscUoNtpPvYRrqN7aP72Ea6je2j+8pqo9u3b2spKt2j10nk/fv3UVxcDFdXV5VyV1dXnD9/XtwPCgrC6dOnkZeXhzp16mDTpk3w9fUtUZ+pqSlMTU3F/ezsbACAkZGR1n/Q5fJ/vzYwMIChoaHWYyL1jI2N2TY6jm2k+9hGuo3to/vYRrqN7aP71LWRkZFep06V6pX4Tuzdu1fbIbw0PuKDiIiIiIh0gV6v+enk5ARDQ0NkZmaqlGdmZsLNza3C9cbExEAqlSIgIOAlI6w8fMQHERERERHpAr1OIk1MTODj44N9+/aJZXK5HPv27VM7XFVTYWFhSE1NRUJCQiVEWTmeTSKJiIiIiIi0ReeHs+bm5uLy5cviflpaGk6dOgUHBwd4enoiIiICoaGhaNu2Ldq3b4/FixcjLy8Po0aN0mLUlY/DWYmIiIiISBfofBJ5/PhxBAYGivvK1VNDQ0MRGxuLIUOG4N69e5g+fToyMjLQunVr7Nq1q8RiO/qOw1mJiIiIiEgX6HwSGRAQgBc9yjI8PBzh4eGVds+YmBjExMSgsLCw0uqsDBIJs0ciIiIiItIuvZ4TWVV0cU4k8G9vJHsiiYiIiIhIW5hE6hEmkUREREREpG1MIvWIAVuLiIiIiIi0jGmJHmFPJBERERERaRuTSDViYmIglUoREBCg7VBUKHsimUQSEREREZG2MIlUgwvrEBERERERqcckUo88+6xIIiIiIiLSXdHR0WjXrh2sra3h4uKCvn374sKFCyrnBAQEQCKRqGwffvihyjk3btxA7969YWFhARcXF3z88ccoKiqqzrdSgs4/J5L+xeGsRERERET6ITExEWFhYWjXrh2Kiorw2WefoUePHkhNTYWlpaV43pgxYzBr1ixx38LCQvy6uLgYvXv3hpubGw4dOoT09HSMGDECxsbG+PLLL6v1/TyLSaQe4XBWIiIiIiL9sGvXLpX92NhYuLi4ICUlBX5+fmK5hYUF3Nzc1NaxZ88epKamYu/evXB1dUXr1q0xe/ZsTJs2DVFRUTAxManS91AaDmdVQ9cX1iEiIiIiIu3IyclBdna2uBUUFGh0XVZWFgDAwcFBpXz9+vVwcnJC8+bNERkZiSdPnojHkpOT0aJFC7i6uoplwcHByM7OxtmzZyvh3VQM0xI1uLAOERERERGpI5VKYWtrK27R0dEvvEYul2PSpEno3LkzmjdvLpa/++67+OmnnxAfH4/IyEisW7cOw4YNE49nZGSoJJAAxP2MjIxKekflx+GseoRJJBERERGRdqWmpqJ27drivqmp6QuvCQsLwz///IODBw+qlI8dO1b8ukWLFnB3d0e3bt1w5coVNGjQoPKCrmTsidQjHM5KRERERKRd1tbWsLGxEbcXJZHh4eHYtm0b4uPjUadOnTLP7dChAwDg8uXLAAA3NzdkZmaqnKPcL20eZXVgWqJH2BNJRERERKQfBEFAeHg4tmzZgr/++gv16tV74TWnTp0CALi7uwMAfH19cebMGdy9e1c8Jy4uDjY2NpBKpVUStyY4nFWP8BEfRERERET6ISwsDBs2bMAff/wBa2trcQ6jra0tzM3NceXKFWzYsAG9evWCo6Mj/v77b0yePBl+fn5o2bIlAKBHjx6QSqUYPnw4FixYgIyMDHz++ecICwvTaBhtVWFPpB5hTyQRERERkX5Yvnw5srKyEBAQAHd3d3HbuHEjAMDExAR79+5Fjx490KRJE0yZMgUDBgzAn3/+KdZhaGiIbdu2wdDQEL6+vhg2bBhGjBih8lxJbWBPpBoxMTGIiYlBYWGhtkNRoUwiiYiIiIhItwkv6Pnx8PBAYmLiC+upW7cuduzYUVlhVQr2RKqhq4/44HBWIiIiIiLSNiaReoQ9kUREREREpG1MIvUIeyKJiIiIiEjbmETqkX8X1mGXJBERERERaQeTSD3C4axERERERKRtTCL1CIezEhERERGRtjGJ1CN8TiQREREREWkbk0g1YmJiIJVKERAQoO1QVBiwtYiIiIiISMuYlqihq8+JVGJPJBERERERaQuTSD3C4axERERERFQeV69erfQ6mUTqEQ5nJSIiIiKi8vD29kZgYCB++ukn5OfnV0qdTEv0CHsiiYiIiIioPE6cOIGWLVsiIiICbm5u+OCDD3D06NGXqpNJpB7hIz6IiIiIiKg8WrdujW+//RZ37tzBjz/+iPT0dHTp0gXNmzfHokWLcO/evXLXySRSjzCJJCIiIiKiijAyMkL//v2xadMmzJ8/H5cvX8bUqVPh4eGBESNGID09XeO6mETqEUNDxSuTSCIiIiIiKo/jx49j/PjxcHd3x6JFizB16lRcuXIFcXFxuHPnDt566y2N6zKqwjipkil7IuVy7cZBRERERET6YdGiRVi9ejUuXLiAXr16Ye3atejVqxcM/j+5qFevHmJjY+Hl5aVxnUwi9YihoaILkj2RRERERESkieXLl+O9997DyJEj4e7urvYcFxcXrFq1SuM6yz2cdc2aNdi+fbu4/8knn8DOzg6dOnXC9evXy1udToqJiYFUKkVAQIC2Q1GhHM7KnkgiIiIiItLEpUuXEBkZWWoCCQAmJiYIDQ3VuM5yJ5FffvklzM3NAQDJycmIiYnBggUL4OTkhMmTJ5e3Op0UFhaG1NRUJCQkaDsUFZwTSURERERE5bF69Wps2rSpRPmmTZuwZs2aCtVZ7iTy5s2b8Pb2BgBs3boVAwYMwNixYxEdHY0DBw5UKAjSDFdnJSIiIiKi8oiOjoaTk1OJchcXF3z55ZcVqrPcSaSVlRUePHgAANizZw+6d+8OADAzM8PTp08rFARphsNZiYiIiIioPG7cuIF69eqVKK9bty5u3LhRoTrLvbBO9+7d8f7776NNmza4ePEievXqBQA4e/ZsuVb0ofIzNFQkkOyJJCIiIiIiTbi4uODvv/8ukaudPn0ajo6OFaqz3D2RMTEx8PX1xb179/Dbb7+JN05JScE777xToSBIM+yJJCIiIiKi8njnnXfw0UcfIT4+HsXFxSguLsZff/2FiRMn4u23365QneXuiczOzsaSJUvE54ooRUVF4ebNmxUKgjRjaAjIZOyJJCIiIiIizcyePRvXrl1Dt27dYGSkSP/kcjlGjBhR4TmR5U4i69Wrh/T0dLi4uKiUP3z4EPXq1UNxcXGFAqEX48I6RERERERUHiYmJti4cSNmz56N06dPw9zcHC1atEDdunUrXGe5k0ihlAwmNzcXZmZmFQ6EXoxJJBERERERVUSjRo3QqFGjSqlL4yQyIiICACCRSDB9+nRYWFiIx4qLi3HkyBG0bt26UoIi9TgnkoiIiIiIyqO4uBixsbHYt28f7t69C/lzycRff/1V7jo1TiJPnjwJQNETeebMGZiYmIjHTExM0KpVK0ydOrXcAZDmlEkkeyKJiIiIiEgTEydORGxsLHr37o3mzZtDIpG8dJ0aJ5Hx8fEAgFGjRuHbb7+FjY3NS9+cykc5nJU9kUREREREpIlffvkFv/76q/hoxspQ7jmRq1evrrSbU/mwJ5KIiIiIiMrDxMQE3t7elVpnuZPIvLw8zJs3r9QxtVevXq204EgVk0giIiIiIiqPKVOm4Ntvv8WyZcsqZSgrUIEk8v3330diYiKGDx8Od3f3SgtEl8TExCAmJgaFhYXaDkUFF9YhIiIiIqLyOHjwIOLj47Fz5040a9YMxsbGKsd///33ctdZ7iRy586d2L59Ozp37lzum+mLsLAwhIWF4datW/Dw8NB2OCI+4oOIiIiIiMrDzs4O/fr1q9Q6y51E2tvbw8HBoVKDIM1wOCsREREREZVHVaxpY1DeC2bPno3p06fjyZMnlR4Mlc3QUJE9MokkIiIiIiJNFRUVYe/evVi5ciVycnIAAHfu3EFubm6F6tOoJ7JNmzYqcx8vX74MV1dXeHl5lRhTe+LEiQoFQi/GOZFERERERFQe169fR8+ePXHjxg0UFBSge/fusLa2xvz581FQUIAVK1aUu06Nksi+ffuWu2KqfBzOSkRERERE5TFx4kS0bdsWp0+fhqOjo1jer18/jBkzpkJ1apREzpgxo0KVU+VSLqzDnkgiIiIiItLEgQMHcOjQIZiYmKiUe3l54fbt2xWqs9xzIkl72BNJRERERETlIZfLUVxcXKL81q1bsLa2rlCd5U4ilauzPr85Ojqidu3a8Pf3r5IVgIiP+CAiIiIiovLp0aMHFi9eLO5LJBLk5uZixowZ6NWrV4XqLPcjPqZPn465c+ciJCQE7du3BwAcPXoUu3btQlhYGNLS0jBu3DgUFRVVeIwtqceeSCIiIiIiKo+FCxciODgYUqkU+fn5ePfdd3Hp0iU4OTnh559/rlCd5U4iDx48iDlz5uDDDz9UKV+5ciX27NmD3377DS1btsSSJUuYRFYyzokkIiIiIqLyqFOnDk6fPo1ffvkFf//9N3JzczF69GgMHToU5ubmFaqz3Enk7t27MX/+/BLl3bp1w5QpUwAAvXr1wqefflqhgKh07IkkIiIiIqLyMjIywrBhwyqvvvJe4ODggD///BOTJ09WKf/zzz/h4OAAAMjLy6vwJE0qHZ8TSURERERE5bF27doyj48YMaLcdZY7ifziiy8wbtw4xMfHi3Mijx07hh07dogPqoyLi4O/v3+5g6Gy/dsTKdFuIEREREREpBcmTpyosi+TyfDkyROYmJjAwsKiQklkuVdnHTNmDBITE2FpaYnff/8dv//+OywsLJCYmIjRo0cDAKZMmYKNGzeWOxgqG1dnJSIiIiLSD9HR0WjXrh2sra3h4uKCvn374sKFCyrn5OfnIywsDI6OjrCyssKAAQOQmZmpcs6NGzfQu3dvWFhYwMXFBR9//DGKioo0juPRo0cqW25uLi5cuIAuXbpU38I6ANC5c2d07ty5QjekiuNwViIiIiIi/ZCYmIiwsDC0a9cORUVF+Oyzz9CjRw+kpqbC0tISADB58mRs374dmzZtgq2tLcLDw9G/f38kJSUBAIqLi9G7d2+4ubnh0KFDSE9Px4gRI2BsbIwvv/yywrE1bNgQ8+bNw7Bhw3D+/PlyX69REpmdnQ0bGxvx67Ioz6PKx4V1iIiIiIj0w65du1T2Y2Nj4eLigpSUFPj5+SErKwurVq3Chg0b0LVrVwDA6tWr0bRpUxw+fBgdO3bEnj17kJqair1798LV1RWtW7fG7NmzMW3aNERFRcHExKTC8RkZGeHOnTsVu1aTk+zt7ZGeng4XFxfY2dlBIik5J08QBEgkEhQXF1coEHoxJpFERERERNqVk5Oj0rFmamoKU1PTF16XlZUFAOJipCkpKZDJZAgKChLPadKkCTw9PZGcnIyOHTsiOTkZLVq0gKurq3hOcHAwxo0bh7Nnz6JNmzYvvO///vc/lX1BEJCeno5ly5ZVeHSpRknkX3/9Jb7Z+Pj4Ct2IXh6HsxIRERERaZdUKlXZnzFjBqKiosq8Ri6XY9KkSejcuTOaN28OAMjIyICJiQns7OxUznV1dUVGRoZ4zrMJpPK48pgm+vbtq7IvkUjg7OyMrl27YuHChRrV8TyNkshnV1rVt1VXt23bhilTpkAul2PatGl4//33tR1ShXFhHSIiIiIi7UpNTUXt2rXFfU16IcPCwvDPP//g4MGDVRmaWvIq6IEq9+qsAHDgwAEMGzYMnTp1wu3btwEA69at08o3pSxFRUWIiIjAX3/9hZMnT+Krr77CgwcPtB1WhbEnkoiIiIhIu6ytrWFjYyNuL0oiw8PDsW3bNsTHx6NOnTpiuZubGwoLC/H48WOV8zMzM+Hm5iae8/xqrcp95TnaUO7VWX/77TcMHz4cQ4cOxYkTJ1BQUABAMcb3yy+/xI4dOyo9yIo6evQomjVrJv5PQUhICPbs2YN33nlHy5FVjKGhoguSPZFERERERLpNEARMmDABW7ZsQUJCAurVq6dy3MfHB8bGxti3bx8GDBgAALhw4QJu3LgBX19fAICvry/mzp2Lu3fvwsXFBQAQFxcHGxubEsNqSxMREaFxzIsWLdLovHInkXPmzMGKFSswYsQI/PLLL2J5586dMWfOnPJWV6b9+/fjq6++QkpKCtLT07Fly5YSY3pjYmLw1VdfISMjA61atcLSpUvRvn17AMCdO3dUuppr164t9pzqI6P/by32RBIRERER6bawsDBs2LABf/zxB6ytrcU5jLa2tjA3N4etrS1Gjx6NiIgIODg4wMbGBhMmTICvry86duwIAOjRowekUimGDx+OBQsWICMjA59//jnCwsI0GkYLACdPnsTJkychk8nQuHFjAMDFixdhaGiI1157TTxP3eKppSn3cNYLFy7Az8+vRLmtrW2JrtiXlZeXh1atWiEmJkbt8Y0bNyIiIgIzZszAiRMn0KpVKwQHB+Pu3buVGodOKC6G683jcEM6k0giIiIiIh23fPlyZGVlISAgAO7u7uK2ceNG8ZxvvvkGb7zxBgYMGAA/Pz+4ubnh999/F48bGhpi27ZtMDQ0hK+vL4YNG4YRI0Zg1qxZGsfRp08f+Pn54datWzhx4gROnDiBmzdvIjAwEG+88Qbi4+MRHx+Pv/76S+M6y90T6ebmhsuXL8PLy0ul/ODBg6hfv355qytTSEgIQkJCSj2+aNEijBkzBqNGjQIArFixAtu3b8ePP/6ITz/9FLVq1VLpebx9+7bYS6lOQUGBODwXUCzfCyjmVspkspd9Oy/F4Kuv8Obs/+BWwDgcLR6I4mK51mMiVcr2YLvoLraR7mMb6Ta2j+5jG+k2to/uK6uNioqKylWXoMEcNDMzM8TExJTaaQYAdevWfakpgwsXLsSePXtgb28vltnb22POnDno0aMHpkyZUu46y51EjhkzBhMnTsSPP/4IiUSCO3fuIDk5GVOnTsUXX3xR7gAqqrCwECkpKYiMjBTLDAwMEBQUhOTkZABA+/bt8c8//+D27duwtbXFzp07y4wxOjoaM2fOLFG+b98+ODk5Vf6bKAd7IyP4AaiHNCTkPcWlSzeRm5ur1ZhIvbi4OG2HQC/ANtJ9bCPd9sq1jyCIm0S5//+vkmeOl3VM3Fd3fmVc+8y+FYDk1avV1vuia8s6BgCSZ2ICoP49vOS1zx9Tufb/PVtXWdc+f+z5usoTU6nXlhXTM6/K440B3NywQbN61ZRJXnTs2cRFEMp37XNxS0r5urzXPn9Oqd+7Mq79Z9QoPG7UCNVF3e+5+/fvV9v9K1N2djbu3btXovzevXtip1l5aZxEpqWloV69evj0008hl8vRrVs3PHnyBH5+fjA1NcXUqVMxYcKECgVREffv30dxcbHa56acP38eAGBkZISFCxciMDAQcrkcn3zyCRwdHUutMzIyUmXi6e3btyGVStGtWzeVuZVa0aMHZFFzYI58uEseo2HDhmqHFZP2yGQyxMXFoXv37jA2NtZ2OKQG20j3VVkbCYJiQrlye35fk2OaXiMIkLzMfTSJ4ZnjL7xXee+j/GNOzfnyoiLcvnkTdWrVUsyHKU/c5Y3v/8slZV3zsu36bALx/IZn/uglIq3r3KwZhO7dq/w+Zf07pK9rq/Tr1w+jRo3CwoULxVGZR44cwccff4z+/ftXqE6Nk8gGDRqgbt26CAwMRGBgIM6dO4ecnBzk5uZCKpXCysqqQgFUtTfffBNvvvmmRueampqqTFDNzs4GoEhGtf4Hp7ExMpr5AciDe/41GBrW1n5MpJaxsTHbRsfpTRsJAlBUBMhkqltREVBcrNie/fr5/bKOVfV+Ba81KipC4OPHMDc3VyQPz57zMskYVQpDAF7aDqKmUy5sIZGo315wTJBIUFRUBCMTE8UiGZpc95L3ZL2aHysWBNy4cQOeXl4wNDTUv/dSDd+j0o4b+fgA1fhvt7q/FYyMyj2IUyesWLECU6dOxbvvvisO0zUyMsLo0aPx1VdfVahOjb8Tf/31FxISEpCQkICff/4ZhYWFqF+/Prp27YquXbsiICCgRK9gVXJycoKhoaHa56a87DNTlOOSCwsLX6qeyvawTSBwaRtqFVwD0Fnb4RDpLkFQJB2FharJ15MnsEhPB/5/tEKJ489vVX1ck3NeMRIANtoOAlD80WJgoNie/frZrbzlulpXOe5RLAi4ePkyGjVuDENjY/1+78oyZXvrwh/TlaBIJsOOHTvQq1cv/fjPsleMXCbD3zt2oE6vXoqfIaJqYGFhge+++w5fffUVrly5AkDRQWhpaVnhOjVOIgMCAhAQEAAAyM/Px6FDh8Skcs2aNZDJZGjSpAnOnj1b4WDKw8TEBD4+Pti3b5/42A+5XI59+/YhPDz8peoOCwtDWFgYbt26BQ8Pj0qItnI8fk2RRLoXXlf8gUykSwQByM8Hnj598ZafDxQUqG7qyl50rKwETA1jAFU/EKaKGRgonvdjaPjvq3J7mf3KrOsl7lUkCDiSkoIOnTrByNT03+MGBoqvqyPJqMQ/6GsauUyGizt2wJt/ABMR6Z309HSkp6fDz88P5ubmEAQB5Xmsx7Mq1CdrZmaGrl27okuXLggMDMTOnTuxcuVKcS5iZcnNzcXly5fF/bS0NJw6dQoODg7w9PREREQEQkND0bZtW7Rv3x6LFy9GXl6euFprTVPQsDnyYAkr5AHXr2s7HNInhYVAbi6Ql6d4ffbrZ1/z8jRLAktLDHWZgQEEY2MUSyQwNDeHxNhYMSzGxETxWtqma8eVPSc1lCCT4b5MBsHPr1qHLREREdVUDx48wODBgxEfHw+JRIJLly6hfv36GD16NOzt7bFw4cJy11muJLKwsBCHDx9GfHw8EhIScOTIEXh4eMDPzw/Lli2Dv79/uQMoy/HjxxEYGCjuKxe9CQ0NRWxsLIYMGYJ79+5h+vTpyMjIQOvWrbFr165qHVZbnYxNDXARjfAaTgIXLmg7HKpKcjmQkwNkZ/+7ZWWp7j9blpNTMil89utyLkn90gwMAHPz0jczM8Vmavrv9vy+urLn91+UgD2bhBkYcJgXERERvXImT54MY2Nj3LhxA02bNhXLhwwZgoiIiKpNIrt27YojR46gXr168Pf3xwcffIANGzbA3d293DfVVEBAAF70fJXw8PCXHr6qL4yMgAto/G8SKQgccqXLZDLg0SPF9vChZq/K5LCCyy2/kIkJYGUFWFqqviq/trAoO/nTdDMy4meTiIiISAfs2bMHu3fvRp06dVTKGzZsiOsVHN2ocRJ54MABuLu7i4vo+Pv7l/m4DH2mqwvrGBkJuIr6kMEIxllZwKlTQJs22g7r1SCXAw8eAHfvAvfuqd0M792D/7VrMProI0VCWBmJoLExYGsL2Nj8uz2/b2OjSAKtrUtPDpWv7H0jIiIieqXk5eXBwsKiRPnDhw9VnkxRHhonkY8fP8aBAweQkJCA+fPn45133kGjRo3g7+8vJpXOzs4VCkLX6OrCOkZGQBGMkWbgjUby88DmzUwiX1ZhIZCZCaSnK7aMjH+/fnY/I+OFQ0INANipO2BrCzg4APb2qq/Pl9nbqyaItraKIZtERERERBX0+uuvY+3atZg9ezYAQCKRQC6XY8GCBSpTB8tD4yTS0tISPXv2RM+ePQEAOTk5OHjwIOLj47FgwQIMHToUDRs2xD///FOhQOjFlJ1IqQbNFEnk2rXArFmKFQupJEEA7t8HbtxQbNevl/z67t3y1WlvDzg7q92K7O1x7OpVtAsOhpGzsyI5tLVVZP9ERERERFqwYMECdOvWDcePH0dhYSE++eQTnD17Fg8fPkRSUlKF6qzwX7eWlpZwcHCAg4MD7O3tYWRkhHPnzlW0OtKAMhe5gMaAmRkSvL2BNWuA+vUBQHwEyyvlyRPg6lXg8uV/t6tX/00Wnz59cR3GxoCbm2Jzd//39fmvXV0VcwpLIchkuLtjB4R27ThslIiIiIh0QvPmzXHx4kUsW7YM1tbWyM3NRf/+/REWFlbh9W00TiLlcjmOHz+OhIQExMfHIykpCXl5eahduzYCAwMRExNT4e5QXaOrcyKVeYlMMAKaNweOH1fMi/z/JLLGEgTg9m0gNfXf7dIlxXb79ouvd3cHPD0VW926ql/XqaPoMazhj00gIiIiolePTCZDz549sWLFCvznP/+ptHo1TiLt7OyQl5cHNzc3BAYG4ptvvkFAQAAaNGhQacHoCl2dE6lMIouLoZgLefw4cPYsEBSkmENXE2RkKBLjs2dVk8bs7NKvsbUFGjYEvL0VW/36gJeXIlGsU4fzComIiIjolWRsbIy///670uvVOIn86quvEBgYiEaNGlV6EKSZf6fWSSC414LE01MxZPPIEaB7d22GVn6CANy8CZw4obqlp6s/39BQkShKpYqtceN/E0cHBz5OgoiIiIhIjWHDhmHVqlWYN29epdWpcRL5wQcfVNpNqWKenWZXXAwYdeqkSCJTUoDOnbUXmCayshTJ7qFDQHKyIuYHD0qeJ5EoEsQWLf5NGJs1UySMZcxHJCIiIiKikoqKivDjjz9i79698PHxgaWlpcrxRYsWlbtOLhupR55d5FMuB9CokWKxl8xMYP9+oFcvrcVWwo0bQGKiImlMSgL++UfR+/gsIyNFgvjaa/9uLVsqnmlIREREREQVdvXqVXh5eeGff/7Ba6+9BgC4ePGiyjmSCo7mYxKpR57tiZTLoei169EDWLcOOHYMOHNG0YOnDdnZQEICEBcH7NkDPPcBBaCYq9ipE+DrC7Rvr1gcyMys2kMlIiIiIqrpGjZsiPT0dMTHxwMAhgwZgiVLlsDV1fWl62YSqYaurs76bE9kcfH/f1G/PtCkCXD+PDB0KHD0aPUkZkVFioV99uxRJI6HDyvKlAwNgbZtgS5dFIljp06Kx2UQEREREVGVE54bBbhz507k5eVVSt1MItXQ1dVZDQwAiUSAIEgUPZFKvXsrho8mJADjxwOrVlXNQjNXrvzb0/jXX4p5js/y9lYs8NO9OxAYCNjZVX4MRERERERUbs8nlS+DSaSeUZtEWlkBffsCu3YBq1crHnmxcOHLP/vw0SNFshgXp9iuXlU9bmcHdOumGFLbvTtQr97L3Y+IiIiIiCqFRCIpMeexonMgn8ckUs8YGCjmQ6okkYBi9dKVK4ExY4DFi4FLl4AVKxTPSdTUkyeKRXDi4xXJ47FjqjcyMlIMS+3eXZE4+vgohq0SEREREZFOEQQBI0eOhOn/PzM9Pz8fH374YYnVWX///fdy180kUs9IJIpuaHFO5LPefx8wNwfeew/Yvl3xqIwRI4CBA4EOHVRXPc3NBa5fVyzGc+KEYk7j4cOATKZaZ5Mm//Y0+vsD1tZV9+aIiIiIiKhShIaGquwPGzas0upmEqlnDAwUSWSJnkiloUMVj8n48EPF4zVWrFBsgGL4qZERUFioWE1VHQ8PxXzGgAAgKEixT0REREREemX16tVVVjeTSDV0dXVW4N/1ckpNIgHFYz4OHlQ8p3H1amDfPuD2beDxY9XzbGwAqVTxfEYfH0VPY/36VbMoDxERERER1QhMItXQ1dVZAQ16IpUkEkVvYkCAYj8rC7hzR3GhkZHicRu2tlUZKhERERER1UBMIvVMmXMiy2Jry6SRiIiIiIhe2ks+A4Kqm7InstxJJBERERERUSVgEqlnDA2ZRBIRERERkfYwidQz7IkkIiIiIiJtYhKpZ5RJZFGRlgMhIiIiIqJXEpNIPcPhrEREREREpE1MItWIiYmBVCpFgPLxGDqEPZFERERERKRNTCLVCAsLQ2pqKhISErQdSgmcE0lERERERNrEJFLPcDgrERERERFpE5NIPcPhrEREREREpE1MIvUMh7MSEREREZE2MYnUMxzOSkRERERE2sQkUs9wOCsREREREWkTk0g9w+GsRERERESkTUwi9QyHsxIRERERkTYxidQzHM5KRERERETaxCRSjZiYGEilUgQEBGg7lBIMDeUA2BNJRERERETawSRSjbCwMKSmpiIhIUHboZTAnkgiIiIiItImJpF6hgvrEBERERGRNjGJ1DPsiSQiIiIi0g/79+9Hnz59UKtWLUgkEmzdulXl+MiRIyGRSFS2nj17qpzz8OFDDB06FDY2NrCzs8Po0aORm5tbje+iJCaReoarsxIRERER6Ye8vDy0atUKMTExpZ7Ts2dPpKeni9vPP/+scnzo0KE4e/Ys4uLisG3bNuzfvx9jx46t6tDLZKTVu1O5cTgrEREREZF+CAkJQUhISJnnmJqaws3NTe2xc+fOYdeuXTh27Bjatm0LAFi6dCl69eqFr7/+GrVq1ar0mDXBnkg9o+yJ5HBWIiIiIqLql5OTg+zsbHErKCh4qfoSEhLg4uKCxo0bY9y4cXjw4IF4LDk5GXZ2dmICCQBBQUEwMDDAkSNHXuq+L4NJpJ5hTyQRERERkfZIpVLY2tqKW3R0dIXr6tmzJ9auXYt9+/Zh/vz5SExMREhICIr//4/9jIwMuLi4qFxjZGQEBwcHZGRkvNT7eBkczqpnuLAOEREREZH2pKamonbt2uK+qalphet6++23xa9btGiBli1bokGDBkhISEC3bt1eKs6qxJ5IPcOeSCIiIiIi7bG2toaNjY24vUwS+bz69evDyckJly9fBgC4ubnh7t27KucUFRXh4cOHpc6jrA5MIvUM50QSEREREdVMt27dwoMHD+Du7g4A8PX1xePHj5GSkiKe89dff0Eul6NDhw7aCpPDWfWNoaEcACCTaTkQIiIiIiIqU25urtirCABpaWk4deoUHBwc4ODggJkzZ2LAgAFwc3PDlStX8Mknn8Db2xvBwcEAgKZNm6Jnz54YM2YMVqxYAZlMhvDwcLz99ttaW5kVYE+k3jEyUvREymSAIGg5GCIiIiIiKtXx48fRpk0btGnTBgAQERGBNm3aYPr06TA0NMTff/+NN998E40aNcLo0aPh4+ODAwcOqAyRXb9+PZo0aYJu3bqhV69e6NKlC77//nttvSUA7InUO8qeSEAxL9KILUhEREREpJMCAgIglNHzs3v37hfW4eDggA0bNlRmWC+NPZF6RjknEuCQViIiIiIiqn5MItWIiYmBVCpFQECAtkMpwcBAgETy75BWIiIiIiKi6sQkUo2wsDCkpqYiISFB26GoZWyseOUKrUREREREVN2YROohZRLJnkgiIiIiIqpuTCL1EJNIIiIiIiLSFiaReki5IiuTSCIiIiIiqm5MIvUQ50QSEREREZG2MInUQxzOSkRERERE2sIkUg9xOCsREREREWkLk0g9xJ5IIiIiIiLSFiaRekjZE8k5kUREREREVN2YROoh9kQSEREREZG2MInUQ8bGAgD2RBIRERERUfVjEqmHuLAOERERERFpC5NIPcThrEREREREpC1MIvUQeyKJiIiIiEhbmETqIfZEEhERERGRtjCJ1EMmJorXwkLtxkFERERERK8eJpF6iEkkERERERFpyyuRRPbr1w/29vYYOHCgtkOpFMoksqBAu3EQEREREdGr55VIIidOnIi1a9dqO4xKY2qqeGVPJBERERERVbdXIokMCAiAtbW1tsOoNCYmAgD2RBIRERERUfXTehK5f/9+9OnTB7Vq1YJEIsHWrVtLnBMTEwMvLy+YmZmhQ4cOOHr0aPUHqkM4J5KIiIiIiLRF60lkXl4eWrVqhZiYGLXHN27ciIiICMyYMQMnTpxAq1atEBwcjLt374rntG7dGs2bNy+x3blzp7reRrVSJpFFRYBcrt1YiIiIiIjo1WKk7QBCQkIQEhJS6vFFixZhzJgxGDVqFABgxYoV2L59O3788Ud8+umnAIBTp05VSiwFBQUoeGaMaE5ODgCgqKgIMh14KKMyBiMjOQBDAMDTp8UwM1M9Ttqh/P6zHXQX20j3sY10G9tH97GNdBvbR/eV1UZFRUXVHY7O0noSWZbCwkKkpKQgMjJSLDMwMEBQUBCSk5Mr/X7R0dGYOXNmifJ9+/bBycmp0u9XUdevX4FE0hiCIMGFC2mwsFB8oHNzc7UcGQFAXFyctkOgF2Ab6T62kW5j++g+tpFuY/voPnVtdP/+fS1Eopt0Oom8f/8+iouL4erqqlLu6uqK8+fPa1xPUFAQTp8+jby8PNSpUwebNm2Cr69vifMiIyMREREh7t++fRtSqRTdunVD7dq1K/5GKolMJsPatWvRoEEDmJoC+flA7dr1oMxv/fz8tBvgK04mkyEuLg7du3eHsbGxtsMhNdhGuo9tpNvYPrqPbaTb2D66r6w2un37tpai0j06nURWlr1792p0nqmpKUyVz88AkJ2dDQAwMjLSqR90AwMDmJpKkJ8PFBUZwlAxslWnYnyVGRsbsy10HNtI97GNdBvbR/exjXQb20f3qWsjI6NXInXSiNYX1imLk5MTDA0NkZmZqVKemZkJNzc3LUWlG5SL6/AxH0REREREVJ10Ook0MTGBj48P9u3bJ5bJ5XLs27dP7XDUyhITEwOpVIqAgIAqu8fL4mM+iIiIiIhIG7TeJ5ubm4vLly+L+2lpaTh16hQcHBzg6emJiIgIhIaGom3btmjfvj0WL16MvLw8cbXWqhAWFoawsDDcunULHh4eVXafl6EcdcskkoiIiIiIqpPWk8jjx48jMDBQ3FcubBMaGorY2FgMGTIE9+7dw/Tp05GRkYHWrVtj165dJRbbedVwOCsREREREWmD1pPIgIAACIJQ5jnh4eEIDw+vpoj0A4ezEhERERGRNuj0nEht0Yc5kcrhrOyJJCIiIiKi6sQkUo2wsDCkpqYiISFB26GUytxc8Zqfr904iIiIiIjo1cIkUk8peyKZRBIRERERUXViEqmnzMwUr0wiiYiIiIioOjGJ1FMczkpERERERNrAJFINfVhYhz2RRERERESkDUwi1dCHhXWUSeTTp9qNg4iIiIiIXi1MIvUUeyKJiIiIiEgbmETqKWUSWVSk2IiIiIiIiKoDk0g9pUwiAfZGEhERERFR9WESqYY+LKwjkfBZkUREREREVP2YRKqhDwvrAHzMBxERERERVT8mkXqMi+sQEREREemu/fv3o0+fPqhVqxYkEgm2bt2qclwQBEyfPh3u7u4wNzdHUFAQLl26pHLOw4cPMXToUNjY2MDOzg6jR49Gbm5uNb6LkphE6jEmkUREREREuisvLw+tWrVCTEyM2uMLFizAkiVLsGLFChw5cgSWlpYIDg5G/jN/4A8dOhRnz55FXFwctm3bhv3792Ps2LHV9RbUMtLq3eml8FmRRERERES6KyQkBCEhIWqPCYKAxYsX4/PPP8dbb70FAFi7di1cXV2xdetWvP322zh37hx27dqFY8eOoW3btgCApUuXolevXvj6669Rq1atansvz2JPpB5TzolkEklEREREVD1ycnKQnZ0tbgUFBRWqJy0tDRkZGQgKChLLbG1t0aFDByQnJwMAkpOTYWdnJyaQABAUFAQDAwMcOXLk5d7IS2ASqccsLRWvT55oNw4iIiIioleFVCqFra2tuEVHR1eonoyMDACAq6urSrmrq6t4LCMjAy4uLirHjYyM4ODgIJ6jDRzOqkZMTAxiYmJQWFio7VDKZGGheM3L024cRERERESvitTUVNSuXVvcN1U+d+8Vwp5INfTlER/KJJI9kURERERE1cPa2ho2NjbiVtEk0s3NDQCQmZmpUp6ZmSkec3Nzw927d1WOFxUV4eHDh+I52sAkUo8ph7OyJ5KIiIiISL/Uq1cPbm5u2Ldvn1iWnZ2NI0eOwNfXFwDg6+uLx48fIyUlRTznr7/+glwuR4cOHao9ZiUOZ9Vj7IkkIiIiItJdubm5uHz5sriflpaGU6dOwcHBAZ6enpg0aRLmzJmDhg0bol69evjiiy9Qq1Yt9O3bFwDQtGlT9OzZE2PGjMGKFSsgk8kQHh6Ot99+W2srswJMIvXas3MiBUG7sRARERERkarjx48jMDBQ3I+IiAAAhIaGIjY2Fp988gny8vIwduxYPH78GF26dMGuXbtgpnyWH4D169cjPDwc3bp1g4GBAQYMGIAlS5ZU+3t5FpNIPaYcziqXAxVcWZiIiIiIiKpIQEAAhDJ6eyQSCWbNmoVZs2aVeo6DgwM2bNhQFeFVGOdE6jFjY8UGcEgrERERERFVDyaRasTExEAqlSIgIEDbobwQ50USEREREVF1YhKphr484gPgCq1ERERERFS9mETqOfZEEhERERFRdWISqeeUPZG5udqNg4iIiIiIXg1MIvWctbXilUkkERERERFVBz7iQ89ZWSlec3KgModTHxYFIiIiIiIi/cOeSD2n7InMydFuHERERERE9GpgEqnnmEQSEREREVF1YhKp555NIgVBu7EQEREREVHNxyRSzynnRMrlwNOn2o2FiIiIiIhqPiaRes7I6N9nRXJIKxERERERVTUmkWrExMRAKpXqzQqnnBdJRERERETVhUmkGmFhYUhNTVV5ZIYuYxJJRERERETVhc+JrAHUJZHPJ8D60qtKRERERES6jT2RNYCNjeI1K0u7cRARERERUc3HJLIGsLNTvD5+rM0oiIiIiIjoVcAksgZgEklERERERNWFSWQNoEwis7IAQdBqKEREREREVMMxiawBbGwAiQQoLgZyc7UdDRERERER1WRMImsAA4N/F9fhkFYiIiIiIqpKTCJrCM6LJCIiIiKi6sAksoawt1e8MokkIiIiIqKqxCSyhmBPJBERERERVQcmkTWEra3i9dEj7cZBREREREQ1G5PIGsLRUfH64IF24yAiIiIiopqNSaQaMTExkEqlCAgI0HYoGnNyUrxmZwOFhdqNhYiIiIiIai4mkWqEhYUhNTUVCQkJ2g5FY+bmgIWF4mv2RhIRERERUVVhElmDKHsj79/XbhxERERERFRzMYmsQTgvkoiIiIiIqhqTyBqEPZFERERERFTVmETWIMqeSCaRRERERERUVZhE1iDOzorX+/eB4mLtxkJERERERDUTk8gaxN4eMDFRJJCcF0lERERERFWBSWQNIpEAbm6KrzMytBsLERERERHVTEwiaxhXV8VrZqZ24yAiIiIiopqJSWQNw55IIiIiIiKqSkwia5hnk0hB0G4sRERERERU8zCJrGGcnRVzI588AXJytB0NERERERHVNEwiaxhj43/nRd66pd1YiIiIiIio5mESWQPVqaN4ZRJJRERERESVjUlkDeThoXi9eVO7cRARERERUc3DJLIGUvZEpqcDRUXajYWIiIiIiGoWJpE1kL09YGkJFBcrEkkiIiIiIqLKwiSyBpJI/h3Sev26dmMhIiIiIqKapcYnkTdv3kRAQACkUilatmyJTZs2aTukauHlpXi9elWrYRARERERvZKioqIgkUhUtiZNmojH8/PzERYWBkdHR1hZWWHAgAHIzMzUYsSaq/FJpJGRERYvXozU1FTs2bMHkyZNQl5enrbDqnL16yteb9wAZDLtxkJERERE9Cpq1qwZ0tPTxe3gwYPiscmTJ+PPP//Epk2bkJiYiDt37qB///5ajFZzRtoOoKq5u7vD3d0dAODm5gYnJyc8fPgQlpaWWo6sajk5ATY2QHa2IpEkIiIiIqLqZWRkhP9r787joir3P4B/ZmAYFkVUNlHZDFRcEBcI0TRFycxb6jWukqGlvSzICr03ff1uoreuWL40r8WVMpXMCltEr6kYomAqbiRuJKmRXJFFUmTRWGae3x9zmRxZHNZzgM/79XpeDOd5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",
            "text/plain": [
              "<Figure size 1000x600 with 2 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "fig, ax1 = plt.subplots(figsize=(10, 6))\n",
        "\n",
        "# Plot the old and new weights vs noise levels\n",
        "ax1.semilogy(sorted_noise_levels, new_weights, color='blue', label='New Weights')\n",
        "ax1.semilogy(sorted_noise_levels, old_weights, color='red', label='Old Weights')\n",
        "ax1.set_xlabel('Noise Levels')\n",
        "ax1.set_ylabel('Weights')\n",
        "ax1.grid(True)\n",
        "\n",
        "# Create a second y-axis for the histogram\n",
        "ax2 = ax1.twinx()\n",
        "\n",
        "# Plot the histogram of noise levels\n",
        "ax2.hist(noise_levels, bins=200, alpha=0.5, color='gray', label='Noise Level Histogram')\n",
        "ax2.set_ylabel('Frequency')\n",
        "\n",
        "# Combine the legends from both axes\n",
        "lines, labels = ax1.get_legend_handles_labels()\n",
        "lines2, labels2 = ax2.get_legend_handles_labels()\n",
        "ax2.legend(lines + lines2, labels + labels2, loc='upper right')\n",
        "\n",
        "plt.title('Loss Weight and Sampling Histogram vs Noise Levels')\n",
        "plt.show()"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ftFahfJNNoa_"
      },
      "source": [
        "Recall that the purpose of weighting the MSE loss is to downweight the loss function at higher noise levels. The 'optimal' weighting for this, as calculated in the appendices of Karras et al., is plotted above (see the blue line) and clearly demonstrates the intended downweighting of later noise levels.\n",
        "\n",
        "The old weight values, however, exhibit very different behavior, showing a monotonic increase in weight as the noise level increases (beyond the minimum achieved at $\\hat{t} = 16$). This is in stark contrast to what is expected and we observe that it greatly impairs training.\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ypvwRWo8Pbk6"
      },
      "source": [
        "## Conclusion\n",
        "\n",
        "We conclude that the weighting of the MSE loss as presented in AF3 Supplementary Material is a typo and will use the corrected weighting, as used in Karras et al., for all required uses in our AF3 implementation."
      ]
    }
  ],
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.9.19"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}
